Messaging systems typically provide the capability for the sender and receiver of messages to execute at different times (asynchronously). The sender does not need to wait for the receiver to be running in order to send a message, and does not need to wait until the receiver has received the message.
In business integration systems, there are typically one or more components inserted between a sender and receiver that are responsible for performing integration functions such as transformation, routing and logging. These components may be Enterprise Service Bus (ESB) mediations, or process engines, for example. These components may be reused in both an asynchronous messaging interaction, and a synchronous invocation interaction.
The messaging applications need to retain the asynchronous nature of their interaction with respect to the overall exchange. Asynchronous interactions are typically much more expensive in processing time and also resource usage to execute than synchronous ones. The problem with existing systems is that each stage of the interaction between the sender and receiver is treated as asynchronous.